// routes/auth.js
const express = require('express');
const router = express.Router();
const bcrypt = require('bcrypt');
const db = require('../db');

// 注册新用户
router.post('/register', async (req, res) => {
  try {
    const { username, email, password } = req.body;

    // 检查是否提供了所有必要字段
    if (!username || !email || !password) {
      return res.status(400).json({ message: '请提供用户名、邮箱和密码' });
    }

    // 检查用户名是否已存在
    db.query('SELECT * FROM users WHERE username = ?', [username], (err, results) => {
      if (err) {
        return res.status(500).json({ message: '数据库查询失败' });
      }
      if (results.length > 0) {
        return res.status(400).json({ message: '用户名已存在' });
      }

      // 检查邮箱是否已存在
      db.query('SELECT * FROM users WHERE email = ?', [email], async (err, results) => {
        if (err) {
          return res.status(500).json({ message: '数据库查询失败' });
        }
        if (results.length > 0) {
          return res.status(400).json({ message: '邮箱已被注册' });
        }

        // 哈希密码
        const hashedPassword = await bcrypt.hash(password, 10);

        // 插入新用户
        db.query('INSERT INTO users (username, email, password) VALUES (?, ?, ?)',
          [username, email, hashedPassword], (err, results) => {
            if (err) {
              return res.status(500).json({ message: '用户注册失败' });
            }
            res.status(201).json({ message: '用户注册成功' });
          });
      });
    });
  } catch (error) {
    console.error('注册错误：', error);
    res.status(500).json({ message: '服务器错误' });
  }
});

// 用户登录
router.post('/login', (req, res) => {
    const { email, password } = req.body;
  
    // 检查是否提供了所有必要字段
    if (!email || !password) {
      return res.status(400).json({ message: '请提供邮箱和密码' });
    }
  
    // 查找用户
    db.query('SELECT * FROM users WHERE email = ?', [email], async (err, results) => {
      if (err) {
        return res.status(500).json({ message: '数据库查询失败' });
      }
      if (results.length === 0) {
        return res.status(400).json({ message: '用户不存在' });
      }
  
      const user = results[0];
  
      // 验证密码
      const isMatch = await bcrypt.compare(password, user.password);
      if (!isMatch) {
        return res.status(400).json({ message: '密码错误' });
      }
  
      res.status(200).json({ message: '登录成功', user: { id: user.id, username: user.username, email: user.email } });
    });
  });

// 获取消息列表

// router.get('/contacts', (req, res) => {
//   db.query('SELECT * FROM contacts', (err, results) => {
//       if (err) return res.status(500).send(err);
//       res.json(results);
//   });
// });

router.get('/contacts',(req,res)=>{
  db.query('SELECT * FROM contacts',(err,results)=>{
    if(err) return res.status(500).send(err);
    res.json(results);
  })
})

module.exports = router;  // 确保导出路由


//陪诊接受表单数据的POST路由
router.post('/submit-order',(req,res)=>{
  const {
    hospital,
    department,
    bedNumber,
    patientName,
    phoneNumber,
    serviceDate,
    serviceTime,
    serviceDays,
    additionalServices,
    otherRequirements,
    notes,
    agreement
  }=req.body
  if(!agreement){
    return res.status(400).json({error:"你必须同意金优陪的隐私政策"})
  }
  const sql=`insert into orders
     (hospital, department, bedNumber, patientName, phoneNumber, serviceDate, serviceTime, 
     serviceDays, additionalServices, otherRequirements, notes, agreement)  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;

const values=[
  hospital,
  department,
  bedNumber,
  patientName,
  phoneNumber,
  serviceDate,
  serviceTime,
  serviceDays,
  additionalServices.join(',') ,//将服务选项存储为逗号分隔
  otherRequirements||'',
  notes|| '',
  agreement ? 1 : 0  // 1 表示同意，0 表示不同意
 
];
db.query(sql,values,(err,result)=>{
  if(err){
    console.log('查询错误',err);
    return res.status(500).json({error:"数据库查询失败"});
  }
  res.json({success:true,orderId:result.insertId});
});
});

module.exports = router;
